package ratons.racleurs.main;

import java.util.ArrayList;
import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

import data.Data_Loader;
import data.POI;
import data.Parcours;

import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.Menu;

public class ParcoursActivity extends MapActivity
{
	private Context context = this;
	private MapView mapView;
	private LocationManager lm;
	private MapController mc;
	private MyLocationOverlay myLocation = null;
	private List<Overlay> mapOverlays;
	private Drawable selected_drawable = null;
	private ItemizedOverlay selected_item;
	public static Parcours parcour_selectionne = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		System.out.println("Parcours");
		setContentView(R.layout.activity_parcours);
		
        mapView = (MapView) this.findViewById(R.id.mapViewParcours);
        mapView.setBuiltInZoomControls(true);
        
        mc = mapView.getController();
        mc.setZoom(12);
        
        String ville_choisie = "null";
        String etape = "0";
        String parcour_choisi = "null";
        ArrayList<String> poi = null;
        
        // Récupération du parcours dans le bundle
        Bundle objetbunble  = this.getIntent().getExtras();
	    if (objetbunble != null && objetbunble.containsKey("ville")) 
	    {
	    	ville_choisie = this.getIntent().getExtras().getString("ville");
	    }
	    
	    if (objetbunble != null && objetbunble.containsKey("etape")) 
	    {
	    	etape = this.getIntent().getExtras().getString("etape");
	    }
	    
	    if (objetbunble != null && objetbunble.containsKey("parcours")) 
	    {
	    	parcour_choisi = this.getIntent().getExtras().getString("parcours");
	    }
	    
	    System.out.println("Parcours : " + parcour_choisi + " Ville : " + ville_choisie + " Etape : " + etape);
        
        List<Parcours> test = null;
		if (ville_choisie.compareTo("Strasbourg")==0)
		{
			test = Data_Loader.getParcours(Data_Loader.STRAS);
		}
		else
		{
			test = Data_Loader.getParcours(Data_Loader.MULHOUSE);
		}
		
		for (Parcours item : test)
		{
			if (item.getNom().compareTo(parcour_choisi)==0)
			{
				System.out.println("Parcours retrouvé dans Parcour : " + item.getNom());
				parcour_selectionne = item;
			}
		}
		
        mapOverlays = mapView.getOverlays();
        selected_drawable = context.getResources().getDrawable(R.drawable.croixprochain);
		selected_item = new ItemizedOverlay(selected_drawable, context);
		
		int num_etape = Integer.parseInt(etape);
		boolean first = true;
		int i = 0;
		for (POI item : parcour_selectionne.getListe_poi())
		{
			if (i <= (num_etape-1))
			{
				float latitude = (float) (item.getLatitude()*1E6);
				float longitude = (float) (item.getLongitude()*1E6);
		        GeoPoint geoPoint = new GeoPoint((int) latitude,(int) longitude);
		        if (first)
		        {
		        	mc.setCenter(geoPoint);
		        	first = false;
		        }
		        OverlayItem overlayitem = new OverlayItem(geoPoint, item.getNom(), item.getNom());
		        selected_item.addOverlayItem(overlayitem);
			}
			i++;
		}
		
		mapOverlays.add(selected_item);
		mapView.invalidate(); // Permet de rafraichir les points
	}

	@Override
	protected boolean isRouteDisplayed() 
	{
		// TODO Auto-generated method stub
		return false;
	}

}
